// 结合输入框，防抖：在固定时间内将多次操作变为一次，要暂停才能看到效果；节流：一定时间内只调用一次（提交表单，高频监听事件）
// 获取名为 'input' 的元素节点
const input = document.querySelector("input");
const div = document.querySelector("div");
// 给 input 元素节点添加 'input' 事件监听器，并使用 antiShake 函数进行防抖处理，防抖延时为 2000 毫秒
input.addEventListener("input", antiShake(demo, 2000));
div.addEventListener("touchmove", throttle(demo,2000));

// 防抖函数
function antiShake(fn, await) {
    // 定义一个变量 tiemOut，用于存储定时器的标识
    let tiemOut = null;

    // 返回一个函数作为事件处理函数
    return (args) => {
        // 如果 tiemOut 存在，则清除上一个定时器
        if (tiemOut) clearTimeout(tiemOut);

        // 设置一个新的定时器，延迟执行 fn 函数
        setTimeout(fn, await);
    };
}
// 示例函数 demo，用于输出 'aaaa'
function demo() {
    console.log("aaaa");
}

// 节流函数自定义和时间戳
function throttle(fn, time) {
    let timer = null;
    return function () {
        if (!timer) {
            timer = setTimeout(() => {
                event();
                timer = null;
            }, time);
        }
    };
}
